沒有好的流程圖,就跟在沙漠跑步一樣。你知道目標是跑出沙漠,但不知道方向是哪。
而且當你一睡醒來後,可能連昨天往哪個方向跑也不知道。
只按著眼前情況寫程式,沒做好事前規劃,是一件很危險的事。
除非你是經驗老道,不然就算程式寫完了,功能也沒有延伸性,最後很有可能要再寫一次。
流程圖可以了解程式過程中的各個階段的功能,並利用不同圖形與箭頭代表它們在程式中的流向。
上一步的結果,決定下一步何去何從
此外,流程圖也可以讓你將瑣碎且複雜的資料整理、歸納,讓其他人對你的程式內容一目了然。
不同人對不同圖像也會有不一樣的差異,為了減少此問題,我們必需要統一流程圖的圖像,提升通用性
現在我們說明一下常見的流程圖圖像的含義及用法:
放置於程式開始端 或是 結束端
用來表示程式開始或結束的圖形
用來表示程式需要輸入的圖形
可以用來表示副程式或是一堆程式步驟的圖形
用來表示單一程式步驟的圖形
用來表示條件判斷的圖形
用來表示影印輸出文件的圖形
===========================心得===========================
範例:
利用圖形來代替部份文字,可以有助閱讀
此外,也可以幫助自己規劃程式、debug...提高程式的邏輯性
新人常常會:
血心來潮就寫幾行;沒想法也寫幾行。
今天想到新方法,再修改前幾天的程式。
到最後,程式寫到一半發現不對勁,就砍掉重練。
那是因為事前沒有為程式做好規劃,呼叫function需要取/傳哪些變數...導致一堆問題產生
先把流程圖規定好,想考慮可行性、邏輯性...
第二步才撰寫程式
如果某一天有新想法,也要先按照來本的流程圖撰寫。(除非真的真的真的有更好的方式)
你可以把新想法記到筆記本中,將來可以為程式製作Ver 2.0、3.0 ....更多版本
不好意思,請問一下,
就習慣上,變數的宣告和賦予初始值會畫在流程圖裡面嗎?
如果有變數的值來自於副程式,那又應該要怎樣畫呢?
附一下我的程式碼的開始的部分....
//Global是區域宣告
Global GPath, ThreadStart, ThreadMax, workerStr
Global theDateIsMyDay,JobIdentifierNo,LeaderName
GPath = "C:\test_game\Nooo"
workerStr = mA1_workerStr_M()
ThreadMax = 2
ThreadStart = False
theDateIsMyDay = date
ThreadExclusive1 = 100000000000000
ThreadExclusive2 = 100000000000000
Dim QuiS,WhoIdle
ReDim WhoIdle(0, 1, ThreadMax)
QuiS = mA0_CheckQui()
我在想到底該不該把他們塞在一個方框裡面,
還是有兩條直線的方框裡面,
還是等到有到用的時候在畫進去呢?
其中比較有問題的地方是
workerStr = mA1_workerStr_M()
QuiS = mA0_CheckQui()
這兩段應該要怎樣畫呢?
是不是等到workerStr或QuiS有用到的時候在畫就可以了呢?
要畫的時候是直接用方框加兩條直線的,
裡面寫副程式名稱就好了嗎?
在流程圖,我不會詳述所有初始值
我會直接用1個方框就表示「設定完所有變數及初始值」
因為它是流程圖,而不是虛擬碼
瞭解了;)
那麼像這樣的流程圖,你覺得OK嗎?
Dim QuiS,WhoIdle
QuiS = mA0_CheckQui()'確認QUI設定正確
//
If QuiS <> "" Then
MsgBox QuiS
Else
QuiS = mX9_Folder_RE'確認資料夾可以被重置
//
If QuiS <> "" Then
QuiS = MsgBox QuiS
Else
Call MZ9_main01(WhoIdle)
End If
//
End If
//
如果不管圖形線條有沒有歪掉的話@@a...
終於完成了一部分,最後決定主線和子線分開畫了@@a...
因為子線複雜度太高了...
放在一起整個比例都會很難調整...
這樣應該有60分了吧XDDD
對了,
我這是用Draw.io線上版畫的,
還蠻好用的;)
我覺得之前學過的東西...好像有回來了XDDD
畫這樣應該有80幾分了吧XDDD
另外,
我的程式是多線程的程式,
主線和子線的溝通管道有兩種:
1.變數數量隨著線程數量增加而增加的,
利用創建、瀏覽、刪除資料夾來溝通的,
我該如何畫這一個部分呢?
2.不會隨著線程數量增加的,
宣告多個單一區域變數,
這一部分又應該怎樣畫呢?
我在別的地方有看到流程圖的符號有桶子狀的,
我是不是該把跨線程的變數畫在桶子裡面呢?
還有一個問題,
Select Case也是要和If Than用一樣的圖形嗎?
我的問題好像很多@@a....